package com.xxx.study.designmodel.f中介者模式;

import java.util.Observable;
import java.util.Observer;

/**
 * 模拟主板类--中介者、观察者
 * 模拟 播放视频的 操作
 */
public class MotherBoardObserver implements Observer {

    private CPUObservable cpuObservable;

    public MotherBoardObserver(CPUObservable cpuObservable) {
        this.cpuObservable = cpuObservable;
    }

    /**
     * 处理各对象 数据变化时需要触发的交互逻辑
     * @param o
     * @param arg
     */
    @Override
    public void update(Observable o, Object arg) {
        if (((Type)o).getType().equals("CD")) {
            // 光驱处理完，数据交给CPU
            cpuObservable.dealData((String)arg);
        }else if (((Type)o).getType().equals("CPUApi")) {
            // CPUApi 处理完，
            // 先从CPU取回显卡数据， 再调用显卡
            String videoData = ((CPUObservable)o).getVideoData();
            new VideoCard().showVideo(videoData);
            // 先从CPU取回声卡数据， 再调用声卡
            String soundData = ((CPUObservable)o).getSoundData();
            new SoundCard().showSound(soundData);
        }
    }
}
